#include <iostream>
#include <vector>
#include <algorithm>
#include <list>
#include <cmath>
#include <cctype>
#include <memory.h>
using namespace std;
//输入 
//输入第一行是整数T (1 <= T <= 10)，表明有T组测试数据。
//
//对于每一组测试数据，第一行给出“炸弹”威力d(1 <= d <= 50)。第二行给出一个数组n(1 <= n <= 20)表示设置了大屏幕(有垃圾)的路口数目。接下来n行每行给出三个数字x, y, i, 分别代表路口的坐标(x, y)以及垃圾数量i. 点坐标(x, y)保证是有效的（区间在0到1024之间），同一坐标只会给出一次。 
//输出 
//对于每组测试数据，输出能清理垃圾最多的投放点数目，以及能够清除的垃圾总量。 
int map[1026][1026] = {0};
int main()
{
	int T;
	cin >> T;
	int i,j,r;
	while(T--)
	{
		int d, n;
		cin >> d >> n;
		memset(map,0,sizeof(map));
		for (int c = 0 ; c < n ; ++c){
			cin >> i >> j >> r;
			for (int x = max(0,i - d) ; x <= min(1024,i + d); ++x){
				for (int y = max(0,j - d); y<= min(1024 , j + d); ++y){
					map[x][y] += r;
				}
			}
		}
		int max = 0;
		for (int i = 0 ; i <= 1024 ; ++i){
			for (int j = 0 ; j <= 1024 ;++j){
				if (map[i][j] > max)max = map[i][j];
			}
		}
		int cnt = 0;
		for (int i = 0 ; i <= 1024 ; ++i){
			for (int j = 0 ; j <= 1024 ;++j){
				if (map[i][j] == max)++cnt;
			}
		}
		cout << cnt << ' ' << max << endl;
		

	}

}